package persistencia;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import modelo.Turno;

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author alumneDAM
 */
public class PersiTurno {

    private ConexionBD conex = new ConexionBD();
    private Connection con;

    //Crea el registro turno por cada partida
    public void crearTurno(Turno turno) {
        try {
            this.conex.conexion();
            this.con = conex.getCon();
            PreparedStatement ps;

            String sql = "INSERT INTO turno VALUES ('" + turno.getIdPartida() + "','"
                    + turno.getIdTurno() + "','" + turno.getJugadorActivo() + "','"
                    + turno.getDadoTirado() + "','"
                    + turno.getNumeroSacado() + "'," + turno.getPreguntasUsadas() + ")";

            ps = con.prepareStatement(sql);
            ps.execute();
            ps.close();

            conex.cerrarConexion();
        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
        }
    }

    public void modificaTurno(Turno turno) {
        try {
            this.conex.conexion();
            this.con = conex.getCon();
            PreparedStatement ps;

            ps = con.prepareStatement("UPDATE turno SET NICKNAME='" 
                    + turno.getJugadorActivo() + "',DADOTIRADO='" 
                    + turno.getDadoTirado() + "',NUMEROSACADO='" 
                    + turno.getNumeroSacado() 
                    + "',PREGUNTAS=" + turno.getPreguntasUsadas() 
                    + " WHERE ID_PARTIDA='" + turno.getIdPartida() + "'");

            ps.execute();
            ps.close();

            conex.cerrarConexion();
        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
        }
    }

    public Turno leeTurno(int idPartida, int idTurno) {
        Turno turno = null;

        try {
            this.conex.conexion();
            this.con = conex.getCon();

            Statement s = con.createStatement();
            ResultSet rs;

            rs = s.executeQuery("SELECT * FROM turno WHERE id_partida='" + idPartida + "' AND id_turno='" + idTurno + "'");

            while (rs.next()) {
                turno = new Turno(rs.getInt(1), rs.getInt(2), rs.getString(3), rs.getInt(4), rs.getInt(5), rs.getString(6));
            }

            s.close();
            rs.close();
            conex.cerrarConexion();
        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
        } finally {
            return turno;
        }
    }

    public void guardarDadoTirado(int idPartida, int idTurno, int dadoTirado, int numeroSacado) {

        try {
            this.conex.conexion();
            this.con = conex.getCon();

            PreparedStatement ps;

            ps = con.prepareStatement("UPDATE turno SET dadotirado= " + dadoTirado 
                    + ", numerosacado= " + numeroSacado + " WHERE id_partida= " + idPartida + " AND id_turno= " + idTurno + "");

            ps.execute();
            ps.close();
            conex.cerrarConexion();
        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
        }
    }

    public void guardarPreguntasUsadas(int idPartida, int idTurno, int idPregunta) {
        String preguntas = "";

        try {
            this.conex.conexion();
            this.con = conex.getCon();

            PreparedStatement ps;
            Statement s = con.createStatement();
            ResultSet rs;

            rs = s.executeQuery("SELECT preguntas FROM turno WHERE id_partida= '" + idPartida + "'");

            while (rs.next()) {
                if (rs.getString(1) == null) {
                    preguntas = String.valueOf(idPregunta);
                } else {
                    preguntas = rs.getString(1) + ", " + String.valueOf(idPregunta);
                }
            }

            ps = con.prepareStatement("UPDATE turno SET preguntas= '" + preguntas + "' WHERE id_partida= '" + idPartida + "' AND id_turno= '" + idTurno + "'");

            ps.execute();
            ps.close();
            s.close();
            rs.close();
            conex.cerrarConexion();
        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
        }
    }

}
